0 > 0 value pcirepeat 3 value vcirepeat 0 value therepeat 0 value pcilast : cl! " config-l!" evaluate ;  ok
0 > : cl@ " config-l@" evaluate ; : pc@ { adr } adr cl@ dup to pcilast therepeat 0 ?do to pcilast adr cl@ loop ; : pciconfig  ok
0 ] 8 << swap b << rot 10 << + + ; : dumpbar { adr ; blo bhi } adr pc@ -> blo blo if 25 spaces adr 8 u.r ." :" blo 7 and 4 = if  ok
2 ] adr 4+ pc@ -> bhi bhi 8 u.r then blo 8 u.r ." ." blo 7 and 4 = if -1 adr 4+ cl! adr 4+ pc@ bhi adr 4+ cl! 8 u.r then -1 adr cl!  ok
1 ] adr pc@ blo adr cl! 8 u.r cr then ; : lspcidump { bus dev fun ; adr } bus 2 u.r ." :" dev 2 u.r ." ." fun 1 u.r  ok
0 ] bus dev fun pciconfig -> adr adr c + pc@ dup 800000 and 0= fun 0= and if 8 else 1 then swap 7f0000 and if 38 14 10 3  ok
1 ] ." -[" adr 18 + pc@ dup 10 >> ff and swap 8 >> ff and 2dup 2 u.r <> if ." -" 2 u.r 1 else drop 4 then ." ]" else  ok
1 ] 30 24 20 1c 18 14 10 7 9 then spaces ." [" adr pc@ dup 4 u.r ." :" 10 >> 4 u.r ." ] [" adr 8 + pc@ 8 >> 6 u.r ." ] "  ok
0 ] 100 0 do adr i + ['] pc@ catch if drop ." ........" else lbflip 8 u.r then 4 +loop cr 0 do adr + dumpbar loop ;  ok
0 > : lspcifun { bus dev fun ; adr } bus dev fun pciconfig -> adr adr ['] pc@ catch if drop 0 else pcilast over = swap -1 <> and  ok
1 ] then if bus dev fun lspcidump else 1 fun 0= if drop 8 then then ; : lspcidev 8 0 do 2dup i lspcifun +loop 2drop ;  ok
0 > : lspcibus 20 0 do dup i lspcidev loop drop ; : lspci pcirepeat to therepeat cr 100 0 do i lspcibus loop ;  ok
0 > : lsvci vcirepeat to therepeat cr 100 0 do i lspcibus loop ;  ok
0 > dev / ls 
ff89d3f0: /cpus           
ff89d680:   /PowerPC,G5@0
ff89db28:     /l2-cache
ff89eb70:   /PowerPC,G5@1
ff89f070:     /l2-cache
ff89f248:   /PowerPC,G5@2
ff89f748:     /l2-cache
ff89f920:   /PowerPC,G5@3
ff89fe20:     /l2-cache
ff89fff8: /chosen
ff8a0178: /memory@0,0
ff8a0380: /openprom
ff8a04e0:   /client-services
ff8a1710: /rom@0,ff800000
ff8a18d0:   /boot-rom@fff00000
ff8a1ac8:   /macos
ff8a1b58: /options
ff8a1be8: /packages
ff8a1fc0:   /deblocker
ff8a2910:   /disk-label
ff8a3978:   /obp-tftp
ff8af490:   /telnet
ff8afd40:   /mac-parts
ff8b3368:   /mac-files
ff8b6500:   /hfs-plus-files
ff8bbc10:   /fat-files
ff8bf3e8:   /iso-9660-files
ff8c01f8:   /bootinfo-loader
ff8c1e68:   /xcoff-loader
ff8c2938:   /macho-loader
ff8c57a0:   /pe-loader
ff8c61a8:   /elf-loader
ff8c80f0:   /usb-hid-class
ff8cac58:   /usb-ms-class
ff8cd9a8:   /usb-audio-class
ff93b4a8:   /ata-disk
ff93da70:   /atapi-disk
ff940090:   /sbp2-disk
ff943f70:   /bootpath-search
ff94a5f8:   /terminal-emulator
ff94a6c0: /firewire-disk-mode
ff961198: /pseudo-hid
ff961250:   /keyboard
ff9618d0:   /mouse
ff961d78:   /eject-key
ff962170: /multiboot
ff9772c8: /diagnostics
ff977360: /xmodem
ff97a960: /nvram@0,fff04000
ff97c040: /u4@0,f8000000
ff97c3b8:   /i2c@f8001000
ff97cfe0:     /i2c-bus@1
ff97d370:       /temp-monitor@94
ff97d7e8:         /temperature@0
ff97dcb0:       /temp-monitor@96
ff97e158:         /temperature@aa
ff97e448:       /temp-monitor@98
ff97eff0:         /internal-temperature@0
ff97f258:         /external-temperature@1
ff97fbc8:       /temp-monitor@9c
ff980770:         /internal-temperature@0
ff9809d8:         /external-temperature@1
ff981348:   /dart@f8033000
ff981488:   /mpic@f8040000
ff981730: /pci@0,f0000000
ffa09d58:   /NVDA,Parent@0
ffa306a0:     /NVDA,Display-B@1
ffa314b0:     /NVDA,Display-A@0
ffa320d0:     /sensor-parent@2
ffa32270:       /gpu-diode-temperature@0
ff982dd0: /ht@0,f2000000
ff984188:   /pci@1
ff985600:   /pci@2
ff9f2628:     /bcom5714@4
ff9fe0f0:     /bcom5714@4,1
ff986a78:   /pci@3
ff987f10:   /pci@4
ff989388:   /pci@5
ff98a820:   /pci@6
ff98bcb8:   /pci@7
ff98d140:   /pci@8
ff98fa78:     /mac-io@7
ff990dd8:       /gpio@50
ff991200:         /smu-doorbell@12
ff9913b0:         /smu-interrupt@d
ff991560:         /programmer-switch@c
ff991790:         /chip-fault@e
ff991938:         /slewing-done@38
ff991ae8:         /mlb-good@13
ff991c38:         /vdnap0@14
ff991d78:         /timebase-enable@26
ff991f30:         /amp-mute@30
ff992080:         /dig-hw-reset-c@9
ff9921d8:         /codec-error-irq@32
ff992390:         /codec-clock-mux@31
ff9924f0:         /headphone-detect@2c
ff9926b0:         /headphone-mute@2f
ff992808:         /hw-reset@a
ff992958:         /lineout-detect@28
ff992b08:         /linein-detect@2a
ff992cb8:         /lineout-mute@2e
ff992ea8:       /escc-legacy@12000
ff9930d0:         /ch-a@12004
ff993280:         /ch-b@12000
ff993430:       /escc@13000
ff993668:         /ch-a@13020
ff994278:         /ch-b@13000
ff994de0:       /i2c@18000
ff995a00:         /i2c-bus@0
ff995bc8:           /codec@8c
ff995d00:           /codec@24
ff995e38:         /i2c-bus@0
ff996000:           /codec@8c
ff996138:       /i2s@0
ff996330:         /i2s-a@10000
ff9964f0:           /sound
ff996678:         /i2s-c@14000
ff996838:           /sound
ff9969c8:       /timer@15000
ff9c1bb8:     /usb@b
ffa325d8:       /hub@1
ffa327e8:         /device@2
ffa329a8:         /hub@3
ffa32c68:           /device@2
ffa32e70:             /keyboard@0
ffa331b0:             /interface@1
ffa33320:           /mouse@3
ff9ca530:     /usb@b,1
ff9d2ea8:     /usb@b,2
ff98e5e0:   /pci@9
ff9d7ab8:     /k2-sata-root@c
ff9d8a20:       /k2-sata@0
ff9db918:         /disk@0
ff9dbfa0:       /k2-sata@1
ff9dee98:         /disk@0
ff9df520:     /ata-6@d
ff9e2708:       /disk
ff9e2d70:     /firewire@e
ff996b70: /smu@0,0
ff996d48:   /power-mgt
ff99f698:   /fans@4a00
ff99fbb0:     /fan@0
ff9a04a8:     /fan@1
ff9a0d98:     /fan@2
ff9a1688:     /fan@3
ff9a1f78:     /fan@4
ff9a2868:     /fan@5
ff9a3158:     /fan@6
ff9a3a48:     /fan@7
ff9a4338:     /fan@8
ff9a4c30:   /sensors@d800
ff9a55d8:     /power-sensor@17
ff9a57a0:   /switches@dc00
ff9a5a48:     /gpi@0
ff9a61a0:     /gpi@5
ff9a6648:   /smu-i2c-control@0
ff9a6ac0:     /i2c-bus@b
ff9a6f90:       /sat@b0
ff9a7540:         /core-actual-vdd0@32
ff9a76e8:         /core-actual-vdd1@33
ff9a7890:         /core-temp0@34
ff9a7a30:         /core-temp1@35
ff9a7bd0:         /core-current0@36
ff9a7d70:         /core-current1@37
ff9a82c8:         /adc@0
ff9a83f8:         /adc@1
ff9a8528:         /adc@2
ff9a8658:         /adc@3
ff9a8788:         /adc@4
ff9a88b8:         /adc@5
ff9a89e8:         /adc@6
ff9a8b18:         /adc@7
ff9a8dc0:       /sat@b2
ff9a9370:         /core-actual-vdd0@32
ff9a9518:         /core-actual-vdd1@33
ff9a96c0:         /core-temp0@34
ff9a9860:         /core-temp1@35
ff9a9a00:         /core-current0@36
ff9a9ba0:         /core-current1@37
ff9aa0f8:         /adc@0
ff9aa228:         /adc@1
ff9aa358:         /adc@2
ff9aa488:         /adc@3
ff9aa5b8:         /adc@4
ff9aa6e8:         /adc@5
ff9aa818:         /adc@6
ff9aa948:         /adc@7
ff9aabf0:       /system-clock@d4
ff9ae560:     /i2c-bus@e
ff9aea30: /aliases ok
0 > dev pci0  ok
0 > lspci 
00:0b.0-[0a]    [106b:005b] [060400] 6b105b000701100000000406080001000000000000000000000a0a0001f1000000f1f0ef01000100000000000000000000000000400000000000000000000000014802c80001000010004101000000001008000001ad000008000111000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0000000f0000000f01000003000006
0a:00.0         [10de:0092] [030000] de10920004001000a100000310000000000000a10c00009000000000040000a0000000000100000000000000de105200000000a2600000000000000000010000000000000000000000000000000000000100000000000000ced623000000000001680200000000000578800000000000000000000000000010000100c004000010080000014d0100080001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                                     000a0010:a1000000.ff000000
                                     000a0014:000000009000000c.fffffffff000000c
                                     000a001c:00000000a0000004.ffffffffff000004
                                     000a0024:00000001.ffffff81
                                     000a0030:a2000000.fffe0001
 ok
0 > dev /ht  ok
0 > lspci 
00:00.0         [106b:0074] [060000] 6b1074000600102000000006000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000ff000000080001202240111124053f00060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009f00ff3f88000000060000000a00000091000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061130040000000000000000ffffff00000000000000000000000000000000000000000000000000000000000000000000000004700b000000000000
00:01.0-[04]    [1166:0130] [060400] 6611300107011000a300040600200100000000000000000000040420f1010024f0ff0000f1ff010000000000000000000000000090000000000000006000000200000000000000000000002000000000000000000000000000000000c85400c005000000000000000000000100000000000000002003000000010000000008001700020030480000000000000000000007a0c30008000000000000000000000008b000a80000e0fe00000000000000000800c1002240111122400000000575000202350000000000000000000c25030300000000e00f00000000000000000000400004030000000000ffb6200000000000028000000000000000000000000000
00:02.0-[05]    [1166:0130] [060400] 6611300107011000a300040600200100000000000000000000050520f101002450fa50faf1ff010000000000000000000000000090000000000000006000000200000000000000000000002000000000000000000000000000000000c80000c0af502814000000000000000100000000000000002001000000000000000000001700020030480000000000000000000007a0c300100000000000000000000000080000a80000e0fe00000000000000000800c0000000110000000000000075000200350000000000000000000c00030300000000e00f00000000000000000000000000000000000000ff00000000000000008000000000000000000000000000
00:03.0-[06]    [1166:0132] [060400] 6611320107011000a300040600000100000000000000000000060620f1010002f0ff0000f1ff0100000000000000000000000000a0000000000000006000000000000000010000000000002000000000000000000000000000000000000000c00100000000000000000000010000000000000987843400000000010000000000010000002010702b720a1800010000fb9003000000000000000000000000000008b000a80000e0fe0000000000000000100041008209000000000000816c020108008100000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00:04.0-[07]    [1166:0132] [060400] 6611320107011000a300040600000100000000000000000000070720f1010002f0ff0000f1ff0100000000000000000000000000a0000000000000006000000000000000010000000000002000000000000000000000000000000000000000c00100000000000000000000010000000000000987843400000000010000000000010000002010702b720a1800010000fb9003000000000000000000000000000008b000a80000e0fe0000000000000000100041008209000000000000416c020208001100000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00:05.0-[08]    [1166:0132] [060400] 6611320107011000a300040600000100000000000000000000080820f1010002f0ff0000f1ff0100000000000000000000000000a0000000000000006000000000000000010000000000002000000000000000000000000000000000000000c00100000000000000000000010000000000000987843400000000010000000000010000002010702b720a1800010000fb9003000000000000000000000000000008b000a80000e0fe0000000000000000100041008209000000000000816c020308004100000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00:06.0-[09]    [1166:0132] [060400] 6611320107011000a300040600000100000000000000000000090920f1010002f0ff0000f1ff0100000000000000000000000000a0000000000000006000000000000000010000000000002000000000000000000000000000000000000000c00100000000000000000000010000000000000987843400000000010000000000010000002010702b720a1800010000fb9003000000000000000000000000000008b000a80000e0fe0000000000000000100041008209000000000000416c020408004100000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00:07.0-[02]    [106b:0053] [060400] 6b105300070110000000040610000100000000000000000000020220f101a00200fa30fa000000000000000000000000000000007000000000000000ff0000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000000890670022400000d00000002402058006000000000000000000000000000000080000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057100000571000000000040000000000000000000000000000000000ffffff00000000000000000000000000
00:08.0-[01]    [106b:0054] [060400] 6b105400070010000000040610000100000000000000000000010120f101a02200800080000000000000000000000000000000007000000000000000ff0000000000000000000000000000000000000090000000000000000000000000000000f3ffffffffffffffffffffffffffffff080024880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00:09.0-[03]    [106b:0055] [060400] 6b105500070010000000040610000100000000000000000000030320f101a02240fa40fa000000000000000000000000000000007000000000000000ff00000000000000000000000000000000000000fe000000e2000000000000000000000000000000000000000000000000000000080024880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
01:07.0         [106b:004f] [ff0000] 6b104f0006000002000000ff10100000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                                     00013810:80000000.fff80000
01:0b.0         [1033:0035] [0c0310] 33103500060010024310030c1010800000200880000000000000000000000000000000000000000000000000331035000000000040000000000000000001012a010002fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000533b06c00000000000000000000000000000000000000000000000000000000
                                     00015810:80082000.fffff000
01:0b.1         [1033:0035] [0c0310] 33103500060010024310030c1010000000100880000000000000000000000000000000000000000000000000331035000000000040000000000000000002012a010002fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                                     00015910:80081000.fffff000
01:0b.2         [1033:00e0] [0c0320] 3310e000040010020420030c10100000000008800000000000000000000000000000000000000000000000003310e00000000000400000000000000000031022010002fe0000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000533b06c0000000001000000000000c000000000000000000000000000000000
                                     00015a10:80080000.ffffff00
02:0f.0         [106b:0051] [020000] 6b1051000400a0840000000210100000000020fa00000000000000000000000000000000000000000000000000000000000000fa0000000000000000ff014040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                                     00027810:fa200000.ffe00000
                                     00027830:fa000000.fff00001
03:0c.0         [1166:0240] [01018f] 6611400206002002008f0101001080000100000001000000010000000100000001000000002040fa000000006611400200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                                     00036010:00000001.0000fff9
                                     00036014:00000001.0000fffd
                                     00036018:00000001.0000fff9
                                     0003601c:00000001.0000fffd
                                     00036020:00000001.0000fff1
                                     00036024:fa402000.ffffe000
03:0d.0         [106b:0050] [ff0000] 6b10500004000002000000ff10200000004040fa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                                     00036810:fa404000.ffffc000
03:0e.0         [106b:0052] [0c0010] 6b105200060090020010000c10f80000000040fa0000000000000000000000000000000000000000000000006b10115800000000440000000000000000010c18000000000100027e00000000000000000000000000000000000000000000000000000000000000000000000000000000ff653000eca9fcfe0000000000000000ff653000eca9fcfe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                                     00037010:fa400000.fffff000
05:04.0         [14e4:166a] [020000] e4146a160600b8020300000210208000040053fa00000000040052fa000000000000000000000000000000006b108500000000004000000000000000000140000748020020054304015002c00021006403584000220000000500860020088000b800081400100000bc0003800f401f7608120000c7000000500000000000000000405803400000401f0300360408408200012c08000001a0000000000000008b000000000000008b00000000000001a00000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                                     00052010:00000000fa530004.ffffffffffff0004
                                     00052018:00000000fa520004.ffffffffffff0004
05:04.1         [14e4:166a] [020000] e4146a160600b0020300000210108000040051fa00000000040050fa000000000000000000000000000000006b108500000000004000000000000000000240000748020021054304015002c0002100640358040000a0100005008600000000100010000900000000be000380000000008a120000c7000000bc000000540b0000000000014b65765400000006040850fe09012c09000000000000000000000000000000000000000000000000000000000000000000000000040000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                                     00052110:00000000fa510004.ffffffffffff0004
                                     00052118:00000000fa500004.ffffffffffff0004
 ok
0 > 
